package com.yuanyuan_340;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.config.rules.DateType;

/**
 * @author: wangqinmin
 * @date : 2020/10/24
 * @description: 仰天大笑出门去，我辈岂是蓬蒿人
 */
public interface Config {


    /*
     * DATABASE_DRIVER_NAME：数据库驱动
     * DATABASE_URL：数据库url
     * DATABASE_USER_NAME：数据库登录名
     * DATABASE_PASS_WORD：数据库登录密码
     * DATABASE_TABLE_NAMES：生成代码的数据库表名(数组)
     *     格式：
     *     String[] includes = new String[]{"sys_user","sys_login","sys_permission","sys_role","sys_role_permission","sys_role_user"};
     * DATABASE_REMOVE_PREFIX：去除生成类的表名前缀(数组)
     *     解释：1. 去除表名前缀(不传,则生成的代码类有数据库表的前缀；多传,无任何影响；).
     *          2. 可以传入多个，但需要自己确定，是否存在去除表前缀后是否有一样的表名.
     *          3. 若存在去除前缀存在一样的表名，需分开生成代码.
     *     格式：不传的格式:「 String[] REMOVE_PREFIX = new String[]{}; 」 或者 「 String[] REMOVE_PREFIX = null; 」
     */
    /**
     * ================================================ 数据库配置 start ================================================
     */
    String DATABASE_DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
    //    String DATABASE_URL = "jdbc:mysql://47.96.100.61:33061/yuanyuan?useUnicode=true&characterEncoding=utf8";
//    String DATABASE_URL = "jdbc:mysql://121.40.104.227:33061/mybatis-generator?useUnicode=true&characterEncoding=utf8";
//    String DATABASE_URL = "jdbc:mysql://localhost:33063/hechachuzhi?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
    String DATABASE_URL = "jdbc:mysql://localhost:33061/mybatis-generator?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
//    String DATABASE_URL = "jdbc:mysql://localhost:3370/etc_data?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
    String DATABASE_USER_NAME = "root";
//    String DATABASE_PASS_WORD = "xQbje1kVxJ/5";
        String DATABASE_PASS_WORD = "wangqinmin";
    String[] DATABASE_TABLE_NAMES = new String[]{
            "example_order",
            "example_pay"
    };
    String[] DATABASE_REMOVE_PREFIX = new String[]{"en_", "sys_", "t_", "new"};
    /**
     * ================================================= 数据库配置 end =================================================
     */



    /*
     * 包名设置：若包名设置为两级 或 两级以上，则格式为："aaa.bbb.*" (包名不能以"."符号结尾)
     * 例如：
     * PACKAGE_PARENT：顶级包名 (例：com)
     * PACKAGE_MODULE_NAME：模块名 (例：taobao) [结果：com.taobao]
     * 数组：
     * PACKAGE_CONTROLLER：controller层包名 (例：web.controller) [结果：com.taobao.web.controller]
     * PACKAGE_PARAM：统一传入参数包名 (例：web.param) [结果：com.taobao.web.param]
     * PACKAGE_VO：统一返回参数包名 (例：web.vo) [结果：com.taobao.web.vo]
     * PACKAGE_ENTITY：实体类映射数据库包名 (例：entity) [结果：com.taobao.entity]
     * PACKAGE_SERVICE：service接口包名 (例：service) [结果：com.taobao.service]
     * PACKAGE_SERVICE_IMPL：service实现类包名 (例：service.impl) [结果：com.taobao.service.impl]
     * PACKAGE_MAPPER：mapper接口包名 (例：mapper) [结果：com.taobao.mapper]
     *     数组格式：{第一个参数：包名,第二个参数：类名后缀名}
     *     解释：例如PACKAGE_CONTROLLER数组的第二个参数，生成的controller代码，将会是：XxxController。
     * PACKAGE_RESPONSE：返回给前端的统一返回对象(第一个参数：包名 第二个参数：返回统一对象类名)
     * RETURN_METHOD: 返回方法 （统一返回给前端的成功方法）
     */
    /**
     * ================================================ 包名的配置 start ================================================
     */
    String PACKAGE_PARENT = "com";
    String PACKAGE_MODULE_NAME = "yuanyuan_340_code";
    String[] PACKAGE_CONTROLLER = {"web.controller", "Controller"};
    String[] PACKAGE_PARAM = {"web.param", "Param"};
    String[] PACKAGE_VO = {"web.vo", "Vo"};
    String[] PACKAGE_ENTITY = {"entity", ""};
    String[] PACKAGE_SERVICE = {"service", "Service"};
    String[] PACKAGE_SERVICE_IMPL = {"service.impl", "ServiceImpl"};
    String[] PACKAGE_MAPPER = {"mapper", "Mapper"};
    String[] PACKAGE_MAPPER_XML = {"mapper.xml", "Mapper.xml"};
    String[] PACKAGE_RESPONSE = {"com.yuanyuan.common.base.result.Responses", "Responses"};
    String SUCCESS_RETURN_METHOD = "success";
//    String SUCCESS_RETURN_METHOD = "OpenResponse.ok";
    /**
     * ================================================ 包名的配置 end ==================================================
     */


    /*
     * CODE_GENERATION_PATH：代码保存路径（不建议传空字符串，不然会覆盖本项目的代码）
     *      例如：windows环境
     *           String CODE_GENERATION_PATH = "C:\\CodeGenerator\\src";
     *           mac环境
     *           String CODE_GENERATION_PATH = "/Users/wangqinmin/Desktop/src";
     * AUTHOR：作者名
     * FILE_OVERRIDE：是否覆盖已有文件
     * OPEN：是否自动打开生成代码的文件夹
     */
    /**
     * =============================================== 代码生成路径 start ================================================
     */
    String CODE_GENERATION_PATH = "/Users/wangqinmin/code/java/javacode/edit/20230325/communism/communism-code-generator/src";
    String AUTHOR = "王钦民";
    boolean FILE_OVERRIDE = true;
    boolean OPEN = true;
    /**
     * ================================================ 代码生成路径 end =================================================
     */



    /*
     * ENABLE_CACHE：是否在mapper.xml中添加二级缓存配置
     * KOTLIN：是否开启Kotlin 模式
     * SWAGGER2：是否开启实体生成 swagger2注解模式
     * ACTIVE_RECORD：是否开启ActiveRecord 模式(默认false)
     * BASE_RESULT_MAP：是否在mapper.xml中添加 BaseResultMap
     * BASE_COLUMN_LIST：是否在mapper.xml中添加 baseColumnList
     * REST_CONTROLLER_ANNOTATION：是否生成@RestController注解
     * ENTITY_LOMBOK_MODEL：是否开启 lombok模式
     * ENTITY_FIELD_ANNOTATION_ENABLE：是否开始实体与数据表字段对应注解
     * CONTROLLER_MAPPING_HYPHEN_STYLE
     * DATA_TYPE：实体类，时间类型对应策略
     * ID_TYPE：实体类，生成的主键的ID类型
     * SUPER_CONTROLLER：自定义继承的Controller类全称，带包名
     * SUPER_ENTITY：自定义继承的Entity类全称，带包名
     * SUPER_SERVICE：自定义继承的Service类全称，带包名
     * SUPER_SERVICE_IMPL：自定义继承的ServiceImpl类全称，带包名
     * SUPER_ID_PARAM：自定义id查询参数类
     * SUPER_QUERY_PARAM：自定义通用查询参数类
     * SUPER_MAPPER：自定义继承的Mapper类全称，带包名（这里直接使用mybatis plus扩展mapper接口）
     * VERSION_FIELD_NAME：乐观锁属性名称
     * LOGIC_DELETE_FIELD_NAME：逻辑删除属性名称
     */
    /**
     * =============================================== 其他功能配置 start ================================================
     */
    boolean ENABLE_CACHE = false;
    boolean SWAGGER2 = true;
    boolean ACTIVE_RECORD = false;
    boolean BASE_RESULT_MAP = false;
    boolean BASE_COLUMN_LIST = true;
    boolean REST_CONTROLLER_ANNOTATION = true;
    boolean ENTITY_LOMBOK_MODEL = true;
    boolean ENTITY_FIELD_ANNOTATION_ENABLE = true;
    boolean CONTROLLER_MAPPING_HYPHEN_STYLE = true;
    DateType DATA_TYPE = DateType.TIME_PACK;
    IdType ID_TYPE = IdType.AUTO;
    String SUPER_CONTROLLER = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.BaseController";
    String SUPER_ENTITY = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.BaseEntity";
    String SUPER_SERVICE = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.BaseService";
    String SUPER_SERVICE_IMPL = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.BaseServiceImpl";
    String SUPER_ID_PARAM = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.param.IdParam";
    String SUPER_ID_VO = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.result.IDVo";
    String SUPER_QUERY_PARAM = PACKAGE_PARENT + StringPool.DOT + PACKAGE_MODULE_NAME + ".common.base.param.QueryParam";
    String SUPER_MAPPER = "com.baomidou.mybatisplus.core.mapper.BaseMapper";
    String VERSION_FIELD_NAME = "version";
    String LOGIC_DELETE_FIELD_NAME = "delete";
    /**
     * ================================================ 其他功能配置 end =================================================
     */



    /*
     * TEMPLATE_SUFFIX：自定义模板后缀
     * TEMPLATE_CONTROLLER：controller 模板位置
     * TEMPLATE_ENTITY_JAVA：entity 模板位置
     * TEMPLATE_SERVICE：service 模板位置
     * TEMPLATE_SERVICE_IMPL：serviceImpl 模板位置
     * TEMPLATE_MAPPER：mapper 模板位置
     * TEMPLATE_XML：mapper.xml 模板位置
     * TEMPLATE_PARAM：param 模板位置
     * TEMPLATE_VO：vo 模板位置
     */
    /**
     * ============================================== 自定义模板名称 start ===============================================
     */
    String TEMPLATE_SUFFIX = ".vm";
    String TEMPLATE_PREFIX = "/template1/";
    String TEMPLATE_CONTROLLER = TEMPLATE_PREFIX + "controller.java" + TEMPLATE_SUFFIX;
    String TEMPLATE_ENTITY_JAVA = TEMPLATE_PREFIX + "entity.java" + TEMPLATE_SUFFIX;
    String TEMPLATE_SERVICE = TEMPLATE_PREFIX + "service.java" + TEMPLATE_SUFFIX;
    String TEMPLATE_SERVICE_IMPL = TEMPLATE_PREFIX + "serviceImpl.java" + TEMPLATE_SUFFIX;
    String TEMPLATE_MAPPER = TEMPLATE_PREFIX + "mapper.java" + TEMPLATE_SUFFIX;
    String TEMPLATE_XML = TEMPLATE_PREFIX + "mapper.xml" + TEMPLATE_SUFFIX;
    String TEMPLATE_PARAM = TEMPLATE_PREFIX + "Param.java.vm";
    String TEMPLATE_VO = TEMPLATE_PREFIX + "Vo.java.vm";
    /**
     * =============================================== 自定义模板名称 end ================================================
     */
}
